// src/utils/showToast.js
import { createVNode, render } from 'vue'
import ShowToast from '@/components/common/Toast.vue'

let toastInstance = null

/**
 * 显示 Toast
 * @param {string} message - 提示内容
 * @param {Object} options - 配置项
 * @param {string} options.position - 'top' | 'center' | 'bottom'
 * @param {number} options.duration - 持续时间（毫秒）
 */
export function Toast(message, options = {}) {
  const { position = 'center', duration = 2000 } = options

  // 如果已有实例，先销毁
  if (toastInstance) {
    render(null, document.body)
    toastInstance = null
  }

  // 创建虚拟 DOM
  const vnode = createVNode(ShowToast, {
    message,
    position,
    duration
  })

  // 渲染到 body
  render(vnode, document.body)

  // 保存实例
  toastInstance = vnode.component

  // 调用组件的 show 方法
  setTimeout(() => {
    if (toastInstance?.exposed?.show) {
      toastInstance.exposed.show()
    }
  }, 0)
}

// 暴露为默认导出（可选）
export default Toast